﻿$(function(){
	$(".rule-single-checkbox").ruleSingleCheckbox();
    $(".rule-multi-checkbox").ruleMultiCheckbox();
    $(".rule-multi-radio").ruleMultiRadio();
    $(".uk-checkbox").checkBox();
    $(".uk-select").select();
    $(".uk-input-datetime").dateTime();
    $(".xm-select").multiSelect();
	//$(".rule-single-select").ruleSingleSelect();
	$(".rule-multi-porp").ruleMultiPorp();
	//$(".rule-date-input").ruleDateInput();
    $(".multiuploader").multiImages();
});
//全选取消按钮函数
function checkAll(chkobj) {
    if ($(chkobj).attr("uk-tooltip") == "全选") {
        //$(chkobj).children("span").text("取消");
        $(chkobj).attr("uk-tooltip", "取消");
        $(".uk-checkbox:enabled").prop("checked", true);
    } else {
        //$(chkobj).children("span").text("全选");
        $(chkobj).attr("uk-tooltip", "全选");
        $(".uk-checkbox:enabled").prop("checked", false);
    }
}

//===========================工具类函数============================
//只允许输入数字
function checkNumber(e) {
    var keynum = window.event ? e.keyCode : e.which;
    if ((48 <= keynum && keynum <= 57) || (96 <= keynum && keynum <= 105) || keynum == 8) {
        return true;
    } else {
        return false;
    }
}
//只允许输入小数
function checkForFloat(obj, e) {
    var isOK = false;
    var key = window.event ? e.keyCode : e.which;
    if ((key > 95 && key < 106) || //小键盘上的0到9  
        (key > 47 && key < 60) ||  //大键盘上的0到9  
        (key == 110 && obj.value.indexOf(".") < 0) || //小键盘上的.而且以前没有输入.  
        (key == 190 && obj.value.indexOf(".") < 0) || //大键盘上的.而且以前没有输入.  
         key == 8 || key == 9 || key == 46 || key == 37 || key == 39) {
        isOK = true;
    } else {
        if (window.event) { //IE
            e.returnValue = false;   //event.returnValue=false 效果相同.    
        } else { //Firefox 
            e.preventDefault();
        }
    }  
    return isOK;  
}
//检查短信字数
function checktxt(obj, txtId) {
    var txtCount = $(obj).val().length;
    if (txtCount < 1) {
        return false;
    }
    var smsLength = Math.ceil(txtCount / 62);
    $("#" + txtId).html("您已输入<b>" + txtCount + "</b>个字符，将以<b>" + smsLength + "</b>条短信扣取费用。");
}
//四舍五入函数
function ForDight(Dight, How) {
    Dight = Math.round(Dight * Math.pow(10, How)) / Math.pow(10, How);
    return Dight;
}
//写Cookie
function addCookie(objName, objValue, objHours) {
    var str = objName + "=" + escape(objValue);
    if (objHours > 0) {//为0时不设定过期时间，浏览器关闭时cookie自动消失
        var date = new Date();
        var ms = objHours * 3600 * 1000;
        date.setTime(date.getTime() + ms);
        str += "; expires=" + date.toGMTString();
    }
    document.cookie = str;
}

//读Cookie
function getCookie(objName) {//获取指定名称的cookie的值
    var arrStr = document.cookie.split("; ");
    for (var i = 0; i < arrStr.length; i++) {
        var temp = arrStr[i].split("=");
        if (temp[0] == objName) return unescape(temp[1]);
    }
    return "";
}

//========================基于artdialog插件========================
//可以自动关闭的提示，基于artdialog插件
function jsprint(msgtitle, url, callback) {
    UIkit.notification({
        message: msgtitle,
        status: 'primary',
        pos: 'top-center',
        timeout: 2000
    });

    //var d = dialog({ content: msgtitle }).show();
    //setTimeout(function () {
    //    d.close().remove();
    //}, 2000);
    if (url == "back") {
        frames["mainframe"].history.back(-1);
    } else if (url != "") {
        frames["mainframe"].location.href = url;
    }
    //执行回调函数
    if (arguments.length == 3) {
        callback();
    }
}
//弹出一个Dialog窗口
function jsdialog(msgtitle, msgcontent, url, callback) {

    UIkit.modal.confirm(msgcontent).then(function () {
        console.log('Confirmed.')
    }, function () {
        console.log('Rejected.')
        if (url == "back") {
            history.back(-1);
        } else if (url != "") {
            location.href = url;
        }
        //执行回调函数
        if (argnum == 5) {
            callback();
        }
    });
}
//打开一个最大化的Dialog
function ShowMaxDialog(url) {
    UIkit.modal.dialog('<iframe src="' + url + '" frameborder="0" style="width:100%; height:100%;" width="100%" height="100%" allowfullscreen="allowfullscreen"></iframe>');
    //dialog({
    //    url: url
    //}).width(1000)
    //  .showModal();
}
//执行回传函数
function ExePostBack(objId, objmsg) {
    if ($(".uk-checkbox:checked").size() < 1) {
        UIkit.modal.dialog('<p class="uk-modal-body">对不起，请选中您要操作的记录!</p>');
        return false;
    }
    var msg = "删除记录后不可恢复，您确定吗?";
    if (arguments.length === 2) {
        msg = objmsg;
    }
    UIkit.modal.confirm(msg).then(function () {
        console.log('Confirmed.')
        __doPostBack(objId, '');
    }, function () {
        console.log('Rejected.')
    });
    return false;
}
//检查是否有选中再决定回传
function CheckPostBack(objId, objmsg) {
    var msg = "对不起，请选中您要操作的记录！";
    if (arguments.length == 2) {
        msg = objmsg;
    }
    if ($(".checkall input:checked").size() < 1) {
        UIkit.modal.dialog('<p class="uk-modal-body">' + msg+'</p>');
        return false;
    }
    __doPostBack(objId, '');
    return false;
}
//执行回传无复选框确认函数
function ExeNoCheckPostBack(objId, objmsg) {
    var msg = "删除记录后不可恢复，您确定吗?";
    if (arguments.length == 2) {
        msg = objmsg;
    }
    UIkit.modal.confirm(msg).then(function () {
        console.log('Confirmed.')
        __doPostBack(objId, '');
    }, function () {
        console.log('Rejected.')
    });

    return false;
}
//======================以上基于artdialog插件======================

//========================基于Validform插件========================
//初始化验证表单
$.fn.initValidform = function () {
    var checkValidform = function (formObj) {
        $(formObj).Validform({
            tiptype: function (msg, o, cssctl) {
                /*msg：提示信息;
                o:{obj:*,type:*,curform:*}
                obj指向的是当前验证的表单元素（或表单对象）；
                type指示提示的状态，值为1、2、3、4， 1：正在检测/提交数据，2：通过验证，3：验证失败，4：提示ignore状态；
                curform为当前form对象;
                cssctl:内置的提示信息样式控制函数，该函数需传入两个参数：显示提示信息的对象 和 当前提示的状态（既形参o中的type）；*/
                //全部验证通过提交表单时o.obj为该表单对象;
                if (!o.obj.is("form")) {
                    //定位到相应的Tab页面
                    if (o.obj.is(o.curform.find(".Validform_error:first"))) {
                        var tabobj = o.obj.parents(".tab-content"); //显示当前的选项
                        var tabindex = $(".tab-content").index(tabobj); //显示当前选项索引
                        if (!$(".content-tab ul li").eq(tabindex).children("a").hasClass("selected")) {
                            $(".content-tab ul li a").removeClass("selected");
                            $(".content-tab ul li").eq(tabindex).children("a").addClass("selected");
                            $(".tab-content").hide();
                            tabobj.show();
                        }
                    }
                    if (o.type === 3) {
                        o.obj.addClass("uk-animation-shake");
                        setTimeout(function () {
                            o.obj.removeClass("uk-animation-shake");

                        }, 500);

                    }
                    //页面上不存在提示信息的标签时，自动创建;
                    if (o.obj.parents("dd").find(".Validform_checktip").length == 0) {
                        o.obj.parents("dd").append("<span class='Validform_checktip' />");
                        o.obj.parents("dd").next().find(".Validform_checktip").remove();
                    }
                    var objtip = o.obj.parents("dd").find(".Validform_checktip");
                    cssctl(objtip, o.type);
                    objtip.text(msg);
                }
            },
            showAllError: true
        });
    };
    return $(this).each(function () {
        checkValidform($(this));
    });
}
//======================以上基于Validform插件======================

//复选框
$.fn.ruleSingleCheckbox = function () {
    var singleCheckbox = function (parentObj) {
        //查找复选框
        var checkObj = parentObj.children('input:checkbox').eq(0);
        //防止重复初始化，删除a标签
        parentObj.children('a').remove();
        //隐藏原生复选框
        parentObj.children().hide();
        //添加元素及样式
        var newObj = $('<a href="javascript:;">'
		+ '<i class="off"></i>'
		+ '<i class="on"></i>'
		+ '</a>').prependTo(parentObj);
        parentObj.addClass("single-checkbox");
        //判断是否选中
        if (checkObj.prop("checked") == true) {
            newObj.addClass("selected");
        }
        //检查控件是否启用
        if (checkObj.prop("disabled") == true) {
            newObj.css("cursor", "default");
            return;
        }
        //绑定事件
        newObj.click(function () {
            if ($(this).hasClass("selected")) {
                $(this).removeClass("selected");
            } else {
                $(this).addClass("selected");
            }
            checkObj.trigger("click"); //触发对应的checkbox的click事件
        });
        //绑定反监听事件
        checkObj.on('click', function () {
            if ($(this).prop("checked") == true && !newObj.hasClass("selected")) {
                newObj.addClass("selected");
            } else if ($(this).prop("checked") == false && newObj.hasClass("selected")) {
                newObj.removeClass("selected");
            }
        });
    };
    return $(this).each(function () {
        singleCheckbox($(this));
    });
};

//多项复选框
$.fn.ruleMultiCheckbox = function() {
	var multiCheckbox = function(parentObj){
		parentObj.addClass("multi-checkbox"); //添加样式
        parentObj.children('.boxwrap').remove(); //防止重复初始化
		parentObj.children().hide(); //隐藏内容
		var divObj = $('<div class="boxwrap"></div>').prependTo(parentObj); //前插入一个DIV
		parentObj.find(":checkbox").each(function(){
			var indexNum = parentObj.find(":checkbox").index(this); //当前索引
			var newObj = $('<a href="javascript:;">' + parentObj.find('label').eq(indexNum).text() + '</a>').appendTo(divObj); //查找对应Label创建选项
			if($(this).prop("checked") == true){
				newObj.addClass("selected"); //默认选中
			}
			//检查控件是否启用
			if($(this).prop("disabled") == true){
				newObj.css("cursor","default");
				return;
			}
			//绑定事件
			$(newObj).click(function(){
				if($(this).hasClass("selected")){
					$(this).removeClass("selected");
					//parentObj.find(':checkbox').eq(indexNum).prop("checked",false);
				}else{
					$(this).addClass("selected");
					//parentObj.find(':checkbox').eq(indexNum).prop("checked",true);
				}
				parentObj.find(':checkbox').eq(indexNum).trigger("click"); //触发对应的checkbox的click事件
				//alert(parentObj.find(':checkbox').eq(indexNum).prop("checked"));
			});
		});
	};
	return $(this).each(function() {
		multiCheckbox($(this));						 
	});
}

//多项选项PROP
$.fn.ruleMultiPorp = function() {
	var multiPorp = function(parentObj){
        var divHtml = '<div style="padding-left:0" class="uk-margin uk-grid-small uk-child-width-auto uk-grid">';
        parentObj.find(":checkbox").each(function () {
            var indexNum = parentObj.find(":checkbox").index(this);
            var label = parentObj.find('label').eq(indexNum);
            var value = $(this).attr("checked") == "checked" ? 'checked="' + $(this).attr("checked") + '"' : '';
            var checkboxHtml = '<label><input id="' + $(this).attr("id") + '" name="' + $(this).attr("name") + '" type="checkbox" ' + value + ' class="uk-checkbox" style="margin-right:3px;" />' + label.text() + '</label>';
            divHtml += checkboxHtml;
        });
        divHtml += '</div>';
        parentObj.children().remove();
        $(divHtml).prependTo(parentObj);
	};
	return $(this).each(function() {
		multiPorp($(this));						 
	});
}

//复选框
$.fn.checkBox = function () {
    var singleCheckbox = function (parentObj) {
        //查找复选框
        var checkObj = parentObj.children('input:checkbox').eq(0);
        checkObj.addClass("uk-checkbox");
        parentObj.removeClass("uk-checkbox");
       
    };
    return $(this).each(function () {
        singleCheckbox($(this));
    });
}

//时间选择
$.fn.dateTime = function () {
    var datetimeInput = function (parentObj) {
        var format = parentObj.attr("date-format");
        var range = parentObj.attr("date-range") === undefined ? false : (parentObj.attr("date-range") === "true" ? true : false);
        var objId = parentObj.attr("id");
        laydate.render({
            elem: '#' + objId,
            format: format,
            range: range
        });

    }
    return $(this).each(function () {
        datetimeInput($(this));
    });
}

//单选
$.fn.select = function () {
    var select = function (parentObj) {
        var list = [];
        parentObj.hide(); //隐藏内容
        
        var parentHtml = parentObj.parent();
        if (!parentHtml.hasClass("xm-select")) {
            var parentObjId = parentObj.attr("id");
            //var hidValue = parentObj.find("input[type='hidden']");
            var selectTip = parentObj.attr("select-tip") === undefined ? "请选择..." : parentObj.attr("select-tip");
            $('<div id="div_' + parentObjId + '"></div>').prependTo(parentHtml); //前插入一个DIV
            parentObj.find("option").each(function () {
                var name = $(this).text();
                var value = $(this).val();
                // console.log("option:"+name+"=>"+value);
                var obj = { "name": name, "value": value };
                list.push(obj);
            });
            //console.log(list);
            var _xm_select = xmSelect.render({
                el: '#div_' + parentObjId,
                filterable: true,
                radio: true,
                language: 'zn',
                theme: {
                    color: '#1e87f0',
                },
                tips: selectTip,
                data: list,
                on: function (data) {
                    var value = "";
                    data.arr.forEach(element => {
                        value = element.value;
                    });
                    parentObj.val(value);
                    console.log("select value =" + value);
                    console.log("ddl value = " + parentObj.val());
                    parentObj.trigger("change");//回调change事件

                }
            })
            var values = parentObj.val();
            _xm_select.setValue([values]);

        }
    }
    return $(this).each(function () {
        select($(this));
    });
}

$.fn.multiImages=function () {
    var multiImages = function (parentObj) {
        var field_name = parentObj.attr("field_name");
        var form_id = parentObj.attr("form_id");
        var field_id = parentObj.attr("field_id");
        var user_id = parentObj.attr("user_id");
        var urls_str = parentObj.children("#field_control_" + field_name + "_urls").val();
        var urls = new Array();
        if(urls_str.length>0) {
            for (var i = 0; i < urls_str.split('|').length; i++) {
                urls[i] = urls_str.split('|')[i];
            }
        }
        parentObj.ajaxImageUpload({
            fileInput: field_name,
            postUrl: '/tools/upload_ajax.ashx?action=upload_multi_images', //上传的服务器地址
            width: 148,
            height: 148,
            allowZoom:false,
            postData: {form_id: form_id, field_id: field_id, field_name, field_name, user_id: user_id},
            imageUrl: urls,
            maxNum: 10, //允许上传图片数量
            allowZoom: true, //允许放大
            allowType: ['png', 'jpg', 'jpeg', 'gif','zip','rar'], //允许上传图片的类型
            maxSize: 10, //允许上传图片的最大尺寸，单位M
            appendMethod: 'before',
            before: function () {
            },
            success: function (json) {
                //alert('上传成功回调函数1');
                if($("#field_control_" + field_name).val().length==0){
                    $("#field_control_" + field_name).val(json.guid);
                }else {
                    $("#field_control_" + field_name).val($("#field_control_" + field_name).val() + "|" + json.guid);
                }
                if($("#field_control_" + field_name + "_urls").val().length==0){
                    $("#field_control_" + field_name + "_urls").val(json.url);
                }else {
                    $("#field_control_" + field_name + "_urls").val($("#field_control_" + field_name + "_urls").val() + "|" + json.url);
                }
            },
            complete: function () {
                //alert('全部上传成功1');
            },
            error: function (e) {
                //alert(e.msg + '(' + e.status + ')');
            }
        });
    }

    return $(this).each(function () {
        multiImages($(this));
    });
}

//多选
$.fn.multiSelect = function () {
    var xmMultiSelect = function (parentObj) {
        var list = [];
        parentObj.children().hide(); //隐藏内容
        var parentObjId = parentObj.find("select").attr("id");
        var hidValue = parentObj.find("input[type='hidden']");
        var selectTip = parentObj.attr("select-tip")==undefined?"请选择...":parentObj.attr("select-tip");
        $('<div id="div_'+ parentObjId +'"></div>').prependTo(parentObj); //前插入一个DIV
        parentObj.find("option").each(function(){
            var name = $(this).text();
            var value = $(this).val();
            // console.log("option:"+name+"=>"+value);
            var obj = {"name": name,"value":value};
            if(value!=undefined && value!='' ){
                list.push(obj);
            }
        })
        //console.log(list);
        var _xm_select = xmSelect.render({
            el: '#div_'+ parentObjId,
            filterable: true,
            language: 'zn',
            theme: {
                color: '#1e87f0',
            },
            tips: selectTip,
            data: list,
            on:function(data){
                var value ="";
                data.arr.forEach(element => {
                    value += element.value + ',';
                });
                value = value.substring(0, value.length-1);
                var newValues = value.split(',');
                var newValue = "";
                newValues.sort().forEach(element=>{
                    newValue += element + ",";
                })
                newValue = newValue.substring(0, newValue.length-1);
                // console.log("select value =" + newValue);
                hidValue.val(newValue);
            }
        })
        var values = hidValue.val().split(',');
        _xm_select.setValue(values);

    }
    return $(this).each(function () {
        xmMultiSelect($(this));
    });
}

//多项单选
$.fn.ruleMultiRadio = function() {
	var multiRadio = function(parentObj){
		parentObj.addClass("multi-radio"); //添加样式
        parentObj.children('.boxwrap').remove(); //防止重复初始化
		parentObj.children().hide(); //隐藏内容
		var divObj = $('<div class="boxwrap"></div>').prependTo(parentObj); //前插入一个DIV
		parentObj.find('input[type="radio"]').each(function(){
			var indexNum = parentObj.find('input[type="radio"]').index(this); //当前索引
			var newObj = $('<a href="javascript:;">' + parentObj.find('label').eq(indexNum).text() + '</a>').appendTo(divObj); //查找对应Label创建选项
			if($(this).prop("checked") == true){
				newObj.addClass("selected"); //默认选中
			}
			//检查控件是否启用
			if($(this).prop("disabled") == true){
                newObj.css("cursor","not-allowed");
				return;
			}
			//绑定事件
			$(newObj).click(function(){
				$(this).siblings().removeClass("selected");
				$(this).addClass("selected");
				parentObj.find('input[type="radio"]').prop("checked",false);
				parentObj.find('input[type="radio"]').eq(indexNum).prop("checked",true);
				parentObj.find('input[type="radio"]').eq(indexNum).trigger("click"); //触发对应的radio的click事件
				//alert(parentObj.find('input[type="radio"]').eq(indexNum).prop("checked"));
			});
		});
	};
	return $(this).each(function() {
		multiRadio($(this));						 
	});
}

////单选下拉框
//$.fn.ruleSingleSelect = function () {
//    var singleSelect = function (parentObj) {
//        if (parentObj.find("select").length == 0) {
//            parentObj.remove();
//            return false;
//        }
//        parentObj.addClass("single-select"); //添加样式
//        parentObj.children('.boxwrap').remove(); //防止重复初始化
//        parentObj.children().hide(); //隐藏内容
//        var divObj = $('<div class="boxwrap"></div>').prependTo(parentObj); //前插入一个DIV
//        //创建元素
//        var titObj = $('<a class="select-tit" href="javascript:;"><span></span><i class="iconfont icon-arrow-down"></i></a>').appendTo(divObj);
//        var itemObj = $('<div class="select-items"><ul></ul></div>').appendTo(divObj);
//        var selectObj = parentObj.find("select").eq(0); //取得select对象
//        //遍历option选项
//        selectObj.find("option").each(function (i) {
//            var indexNum = selectObj.find("option").index(this); //当前索引
//            var liObj = $('<li>' + $(this).text() + '</li>').appendTo(itemObj.find("ul")); //创建LI
//            if ($(this).prop("selected") == true) {
//                liObj.addClass("selected");
//                titObj.find("span").text($(this).text());
//            }
//            //检查控件是否启用
//            if ($(this).prop("disabled") == true) {
//                liObj.css("cursor", "default");
//                return;
//            }
//            //绑定事件
//            liObj.click(function () {
//                $(this).siblings().removeClass("selected");
//                $(this).addClass("selected"); //添加选中样式
//                selectObj.find("option").prop("selected", false);
//                selectObj.find("option").eq(indexNum).prop("selected", true); //赋值给对应的option
//                titObj.find("span").text($(this).text()); //赋值选中值
//                itemObj.hide(); //隐藏下拉框
//                selectObj.trigger("change"); //触发select的onchange事件
//                //alert(selectObj.find("option:selected").text());
//            });
//        });
//        //设置样式
//        //titObj.css({ "width": titObj.innerWidth(), "overflow": "hidden" });
//        //itemObj.children("ul").css({ "max-height": $(document).height() - titObj.offset().top - 62 });

//        //检查控件是否启用
//        if (selectObj.prop("disabled") == true) {
//            titObj.css("cursor", "default");
//            return;
//        }
//        //绑定单击事件
//        titObj.click(function (e) {
//            e.stopPropagation();
//            if (itemObj.is(":hidden")) {
//                //隐藏其它的下位框菜单
//                $(".single-select .select-items").hide();
//                $(".single-select .arrow").hide();
//                //位于其它无素的上面
//                itemObj.css("z-index", "1");
//                //显示下拉框
//                itemObj.show();
                
//                //5.0新增判断下拉框上或下呈现
//                if(parentObj.parents('.tab-content').length > 0){
//                    var tabObj = parentObj.parents('.tab-content');
//                    //容器高度-下拉框TOP坐标值-容器TOP坐标值
//                    var itemBttomVal = tabObj.innerHeight() - itemObj.offset().top + tabObj.offset().top - 12;
//                    if(itemBttomVal < itemObj.height()){
//                        var itemTopVal = tabObj.innerHeight() - itemBttomVal - 61;
//                        if(itemBttomVal > itemTopVal){
//                            itemObj.children('ul').height(itemBttomVal);
//                        }else{
//                            if(itemTopVal < itemObj.height()){
//                                itemObj.children('ul').height(itemTopVal);
//                            }
//                            if(!parentObj.hasClass('up')){
//                                parentObj.addClass("up"); //添加样式
//                            }
//                        }
//                    }
//                }
                
//            } else {
//                //位于其它无素的上面
//                itemObj.css("z-index", "");
//                //隐藏下拉框
//                itemObj.hide();
//            }
//        });
//        //绑定页面点击事件
//        $(document).click(function (e) {
//            selectObj.trigger("blur"); //触发select的onblure事件
//            itemObj.hide(); //隐藏下拉框
//        });
//    };
//    return $(this).each(function () {
//        singleSelect($(this));
//    });
//}

////日期控件
//$.fn.ruleDateInput = function() {
//	var dateInput = function(parentObj){
//		parentObj.wrap('<div class="date-input"></div>');
//		parentObj.before('<i class="iconfont icon-date"></i>');
//	};
//	return $(this).each(function() {
//		dateInput($(this));						 
//	});
//}